package com.boot.mgt.utils;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * 常量类。
 * 
 * @author kfy
 *
 */
public final class Const {

	/**
	 * 程序根
	 */
	public static String APP_WORK_PATH=System.getProperty("appWorkPath");
	
	public static String CLASS_PATH=APP_WORK_PATH+File.separator+"WEB-INF"+File.separator+"classes";
	
	public static String SYS_CFG_FILE=CLASS_PATH+File.separator+"sysConfig.xml";
	
	public static String WORK_FLOW_FILE=CLASS_PATH+File.separator+"workFlow.xml";
	
	public static String HIBERNATE_CFG_FILE=CLASS_PATH+File.separator+"conf"+File.separator+"hibernate.cfg.xml";
	
	public static String CONFIG_PATH=CLASS_PATH+File.separator+"config";
	
	
	/**
	 * 商洛巨龙请求服务是否开启
	 */
	public static String DRAGONSOFT_SL = "/root/dragonsoft_sl";
	
	/**
	 * UTF-8
	 */
	public static String UTF_8 = "UTF-8";
	
	/**
	 * 巨龙错误代码与描述对应关系
	 */
	public static String DRAGON_ERR_DESC_FILE = CONFIG_PATH + File.separator
			+ "jlbdcx-err-desc.xml";
	
	/**
	 * 天成错误代码与描述对应关系
	 */
	public static String TC_SERVICE_ERR_DESC_FILE = CONFIG_PATH + File.separator
			+ "tc-service-err-desc.xml";
	
	/**
	 * 吉林本地查询接口错误代码与描述对应关系
	 */
	public static String JLBDCX_ERR_DESC_FILE = CONFIG_PATH + File.separator
			+ "dragon-err-desc.xml";
	
	/**
	 * 西藏资源服务总线接口错误代码与描述对应关系
	 */
	public static String DRAGON_XZ_ERR_DESC_FILE = CONFIG_PATH + File.separator
			+ "dragon-xz-err-desc.xml";
	
	
	public static String JSONRPC_ERR_DESC_FILE = CONFIG_PATH + File.separator
			+ "JsonRpc-err-desc.xml";
	
	public static String USER_INFO="userinfo";
	
	/**
	 * 用于对字符串日期时间值格式化
	 */
	public final static Pattern dataPatternKey = Pattern.compile("[-/: 年月日时分秒]");
	/**
	 * 时间模式正则表达式
	 */
	public static String[] datePattern={
		
		// 年月日 索引 0~3
		"^\\d{8}$",
		"^\\d{4}-\\d{1,2}-\\d{1,2}$",
		"^\\d{4}/\\d{1,2}/\\d{1,2}$",
		"^\\d{4}年\\d{1,2}月\\d{1,2}日$",//索引到 3
		
		// 年月日时分秒 索引 4~7
		"^\\d{14}$",
		"^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}$",
		"^\\d{4}/\\d{1,2}/\\d{1,2} \\d{1,2}/\\d{1,2}/\\d{1,2}$",
		"^\\d{4}年\\d{1,2}月\\d{1,2}日 \\d{1,2}时\\d{1,2}分\\d{1,2}秒$",
		
		// 时分秒 索引 8~11
		"^\\d{6}$",
		"^\\d{1,2}:\\d{1,2}:\\d{1,2}$",
		"^\\d{1,2}/\\d{1,2}/\\d{1,2}$",
		"^\\d{1,2}时\\d{1,2}分\\d{1,2}秒$",
		
		// 年月日时分 索引 12~15
		"^\\d{12}$",
		"^\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}:\\d{1,2}$",
		"^\\d{4}/\\d{1,2}/\\d{1,2} \\d{1,2}/\\d{1,2}$",
		"^\\d{4}年\\d{1,2}月\\d{1,2}日 \\d{1,2}时\\d{1,2}分$",//索引到 15
		
		// 时分 索引 16~末尾
		"^\\d{4}$",
		"^\\d{1,2}:\\d{1,2}$",
		"^\\d{1,2}/\\d{1,2}$",
		"^\\d{1,2}时\\d{1,2}分$"
		};
	
	/**
	 * 与时间模式匹配的时间格式
	 */
	public static String[] dateFormat={
		
		// 年月日
		"yyyyMMdd",
		"yyyy-MM-dd",
		"yyyy/MM/dd",
		"yyyy年MM月dd日",
		
		// 年月日时分秒
		"yyyyMMddHHmmss",
		"yyyy-MM-dd HH:mm:ss",
		"yyyy/MM/dd HH/mm/ss",
		"yyyy年MM月dd日 HH时mm分ss秒",
		
		// 时分秒
		"HHmmss",
		"HH:mm:ss",
		"HH/mm/ss",
		"HH时mm分ss秒",
		
		// 年月日时分
		"yyyyMMddHHmm",
		"yyyy-MM-dd HH:mm",
		"yyyy/MM/dd HH/mm",
		"yyyy年MM月dd日 HH时mm分",
		
		// 时分
		"HHmm",
		"HH:mm",
		"HH/mm",
		"HH时mm分"
		};
	
	/**
	 * DRS鉴权开关
	 */
	public final static int SWITCH_ON = 1;
	
	/**
	 * 接入网
	 */
	public final static int NETWORK_AREA_SWITCH = 2;
	
	/**
	 * 默认日期格式
	 */
	public final static String DATE_FORMAT_YYYY_MM_DD = "yyyy-MM-dd";
	
	/**
	 * Date类型
	 */
	public final static String TYPE_OF_DATE = "class java.util.Date";
	
	/**
	 * MVC接口返回结果状态 : 成功
	 */
	public final static String MVC_RETURN_SUCCESS = "1";
	
	/**
	 * MVC接口返回结果状态 : 失败
	 */
	public final static String MVC_RETURN_ERROR = "0";
	
	/**
	 * DATA返回成功
	 */
	public final static String ALL_DATA_SUCCESS = "SUCCESS";
	
	/**
	 * DATA返回更新资源错误信息
	 */
	public final static String CONTROL_UPDATEDS_ERROR = "更新资源错误: ";
	
	/**
	 * DATA返回删除资源错误信息
	 */
	public final static String CONTROL_DELETEDS_ERROR = "删除资源错误: ";
	
	/**
	 * DATA返回修改资源状态错误信息
	 */
	public final static String CONTROL_DELETESTATE_ERROR = "更改资源状态错误: ";
	
	/**
	 * DATA返回数据源测试不联通错误信息
	 */
	public final static String ALL_CHECKDS_ERROR = "数据源不可连通";
	
	/**
	 * DATA返回不存在制定数据源资源错误信息
	 */
	public final static String ALL_NODS_ERROR = "不存在该数据源资源: ";
	
	/**
	 * DATA返回数据库连接失败错误信息
	 */
	public final static String ALL_DBCONN_ERROR = "数据库连接失败: ";
	
	/**
	 * DATA返回对端机URL不存在错误信息
	 */
	public final static String ALL_NOOPURL_ERROR = "对端机地址不存在";
	
	/**
	 * DATA返回对端机服务不可达错误信息
	 */
	public final static String ALL_CANTREACH_ERROR = "对端机服务不可达";
	
	/**
	 * 封装对端机调用参数错误
	 */
	public final static String All_GET_OP_PARAM_ERROR = "封装对端机调用参数错误";
	
	/**
	 * 请求参数校验不通过
	 */
	public final static String ALL_REQUEST_PARAMS_ERROR = "请求参数校验不通过: ";
	
	/**
	 * 接口请求参数locTabName空错误信息
	 */
	public final static String REQUEST_LOCTABNAME_ERROR = "请求参数locTabName不可为空";
	
	/**
	 * 接口请求对象dataSourceBean参数空错误信息
	 */
	public final static String REQUEST_DATASOURCEBEAN_PARAM_ERROR = "请求对象dataSourceBean参数不完整,必填项及值范围请查阅接口文档";
	
	/**
	 * 接口请求参数ifExe空值或值校验错误信息
	 */
	public final static String REQUEST_IFEXE_ERROR = "请求参数ifExe不可为空或值错误:请填默认值0";
	
	/**
	 * 接口请求参数tabState空值或值校验错误信息
	 */
	public final static String REQUEST_TABSTATE_ERROR = "请求参数tabState不可为空或值错误:0/禁用;1/启用";
	
	/**
	 * addDataSource接口地址
	 */
	public final static String ADD_DATASOURCE_URL = "addDataSource.do";
	
	/**
	 * updateDataSource接口地址
	 */
	public final static String UPDATE_DATASOURCE_URL = "updateDataSource.do";
	
	/**
	 * deleteDataSource接口地址
	 */
	public final static String DELETE_DATASOURCE_URL = "deleteDataSource.do";
	
	/**
	 * updateDataSourceState接口地址
	 */
	public final static String UPDATE_DATASOURCE_STATE_URL = "updateDataSourceState.do";
	
	/**
	 * getOutTabCols接口地址
	 */
	public final static String GET_OUT_TAB_COLS_URL = "getOutTabCols.do";
	
	/**
	 * checkDbSource接口地址
	 */
	public final static String CHECK_DBSOURCE_URL = "checkDbSource.do";
	
	/**
	 * getLocTable接口地址
	 */
	public final static String GET_LOC_TABLE = "getLocTable.do";
	
	/**
	 * 默认的系统错误
	 */
	public final static String DEFAULT_SYSTEM_ERROR = "系统错误";
	/**
	 * 操作成功
	 */
	public final static String DEFAULT_OPERATOR = "操作成功";
	
	/**
	 * 应用权限校验-通过
	 */
	public final static int APPPOWER_CHECK_SCC=0;
	
	
	/**
	 * 应用权限校验 -找不到应用信息
	 */
	public final static int APPPOWER_CHECK_NOTFOUND_APP=1;

	
	/**
	 * 应用权限校验 -找不到权限信息
	 */
	public final static int APPPOWER_CHECK_NOTFOUND_POWER=2;
	
	
	/**
	 * 应用权限校验 -找不到本地表相关信息
	 */
	public final static int APPPOWER_CHECK_NOTFOUND_LOCALTABLE=3;
	
	/**
	 * 应用权限校验 -转向后置
	 */
	public final static int APPPOWER_CHECK_FORWARD_AFTER=-1;
	
	/**
	 * 代理方式-非代理
	 */
	public final static int  AGENT_NOT_PROXY = 0;
	
	/**
	 * 代理方式-完全代理
	 */
	public final static int  AGENT_FULL_PROXY = 1;
	
	/**
	 * 代理方式-部分代理
	 */
	public final static int  AGENT_SOME_PROXY =2;
	
	
	/**
	 * 方法名称-建立会话
	 */
	public final static String METHOD_NAME_CONNECT ="connect";
	

	/**
	 * 方法名称-查询
	 */
	public final static String METHOD_NAME_QUERY ="query";
	
	
	/**
	 * 方法名称-操作
	 */
	public final static String METHOD_NAME_OPERATE ="operate";
	
	/**
	 * 方法名称-查询app应用权限本地表
	 */
	public final static String METHOD_NAME_QUERY_APPPOWER ="queryAppPower";
	
	
	/**
	 * 方法名称-查询appid
	 */
	public final static String METHOD_NAME_QUERY_APPID ="queryAppId";
	
	
	public final static int DATA_OPERATETYPE_QUERY=0;
	
	/**
	 * 数据操作类型-添加
	 */
	public final static int DATA_OPERATETYPE_INSERT=1;
	
	/**
	 * 数据操作类型-更新
	 */
	public final static int DATA_OPERATETYPE_UPDATE=2;
	
	/**
	 * 数据操作类型-删除
	 */
	public final static int DATA_OPERATETYPE_DELETE=3;
	
	
	
	
	public final static int  DATASOURCE_TYPE_WEBSERVICE =2;
	
	
	public final static int  DATASOURCE_TYPE_JSONRPC =1;
	
	public final static int  DATASOURCE_TYPE_WEBSERVICE_JSONRPC =3;
	
	
	public static final String SESSION_SUCC_DESC="会话创建成功";
	
	public static final String QUERY_SUCC_DESC="查询成功";
	
	public static final String OPERATE_SUCC_DESC="操作成功";
	
	public static final String OPERATE_FAIL_DESC ="操作失败";
	
	
	/**
	 * session会话是否校验通过 --通过
	 */
	public static final String SESSION_CHECK_PASS ="1";
	
	/**
	 * session会话是否校验通过 --未通过
	 */
	public static final String SESSION_CHECK_NOTPASS ="0";
	
	
	/**
	 * 应用权限是否校验通过 --通过
	 */
    public static final String APP_POWDER_CHECK_PASS ="1";
	
    /**
	 * 应用权限是否校验通过 --未通过
	 */
	public static final String APP_POWDER_CHECK_NOTPASS ="0";
	
	
	public static final String APP_ENABLE_1 ="1";
	
	/**
	 * 版本号
	 */
	public static final String VERSION ="20180523";
	
	/**
	 * 事务开启
	 */
	public static final int TRANSACTION_ON =1;
	
	/**
	 * 事务关闭
	 */
	public static final int TRANSACTION_OFF =0;
	
	
	/**
	 * 操作成功
	 */
	public static final String OPERATECODE_SUCC ="1";
	
	/**
	 * 操作失败
	 */
	public static final String OPERATECODE_FAIL ="2";

	/**
	 * 本地表导出EXCEL表名
	 */
	public final static String LOCAL_TABLE_EXCEL_TITLE_NAME = "资源表信息";
	/**
	 * 本地表导出EXCEL文件名
	 */
	public final static String LOCAL_TABLE_EXCEL_FILE_NAME = "exp_localtable.xls";
	/**
	 * 本地表字段导出EXCEL表名
	 */
	public final static String LOCAL_COLUMN_EXCEL_TITLE_NAME = "资源表#字段信息";
	/**
	 * 本地表字段导出EXCEL文件名
	 */
	public final static String LOCAL_COLUMN_EXCEL_FILE_NAME = "exp_localcolum.xls";
	
	 /**
     * 数据库连接错误
     */
	public static final int ERR_DB_CODE = 512;
	
	 /**
     * redis连接错误
     */
	public static final int ERR_REDIS_CODE = 513;
	
	/**
	 * drs连接错误
	 */
	public static final int ERR_DRS_CODE = 517;
	
	public static final int ERR_MUTI_CODE = 516;
	
	public static final Map<Integer,String> errMap = new HashMap<Integer,String>();
	static{
		errMap.put(ERR_DB_CODE, "数据库连接异常");
		errMap.put(ERR_REDIS_CODE, "redis服务连接异常");
		errMap.put(ERR_DRS_CODE, "drs后置服务连接异常");
	}
	/**
	 * 外部表导入Excel表头
	 */
	public final static String[] IMP_EXCEL_COLUMN_TITLE = {"表名","表中文名","字段","名称","类型","长度"};
}
